package util;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.ejb.EJB;

import be.ipl.finito.domaine.Jeton;
import be.ipl.finito.domaine.Joueur;
import be.ipl.finito.usecases.GestionJeton;

public class TourPartie {
	
	@EJB GestionJeton gestionjeton;
	
	private static int id = 0;
	private int idTour;
	private int de;
	private Jeton jeton;
	private Map<Integer, Boolean> aJoue = new HashMap<Integer, Boolean>();
	private Map<Integer, Integer> jetonPlace = new HashMap<Integer, Integer>();
	
	public static final int TEMPS_MAX_TOUR = 30;
	
	// Initialise la map idJoueur -> false
	public TourPartie(List<Joueur> joueurs, int de) {
		for (Joueur j : joueurs) {
			aJoue.put(j.getId(), new Boolean(false));
		}
		this.de = de;
		this.idTour = id;
		id++;
	}
	
	// Renvoie true si tous les joueurs ont joué
	public boolean jouer(int idJoueur, Jeton jeton) {
		this.jeton = jeton;
		aJoue.put(idJoueur, true);
		jetonPlace.put(idJoueur, jeton.getNumero());
		for (Integer i : aJoue.keySet()) {
			if (aJoue.get(i) == false) return false;
		}
		return true;
	}
	
	public boolean tousOntJouee(){
		return !aJoue.values().contains(false);
	}

	public int getDe() {
		return de;
	}
	
	public int getJetonPlace(int idJoueur){
		return jetonPlace.get(idJoueur);
	}
	
	public void setJeton(Jeton jeton){
		this.jeton = jeton;
	}
	
	public Jeton getJeton(){
		return jeton;
	}
	
	public int getId(){
		return id;
	}
	
	public boolean aJoue(int idJoueur){
		return aJoue.get(idJoueur);
	}
}
